// 定义一个函数Rad，用于将角度转换为弧度
// 因为在JavaScript中的Math函数都是以弧度为单位的，所以需要将经纬度从度转换为弧度
function Rad(d) {
  return d * Math.PI / 180.0; // 将度转换为弧度
}

/*
 定义一个函数getMapDistance，通过两地经纬度计算距离  用于计算两个经纬度点之间的距离
 参数分别为第一点的纬度lat1，经度lng1；第二点的纬度lat2，经度lng2
 默认单位为千米(km)
  
 这个函数使用了哈弗辛公式(Haversine formula)来计算两点之间的大圆距离
 哈弗辛公式可以计算出两点在地球表面的最短距离
 */
export const getMapDistance = (lat1, lng1, lat2, lng2) => {
  // 将经纬度转换为弧度
  var radLat1 = Rad(lat1);
  var radLat2 = Rad(lat2);
  // 计算两点纬度的差值和经度的差值
  var a = radLat1 - radLat2;
  var b = Rad(lng1) - Rad(lng2);
  // 使用哈弗辛公式计算距离
  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
    Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  // 将计算结果乘以地球的平均半径，单位为米
  s = s * 6378.137; // EARTH_RADIUS;
  // 将结果四舍五入到万分位，并转换为千米
  s = Math.round(s * 10000) / 10000; 
  // 将结果保留两位小数
  s = s.toFixed(2);
  // 返回计算出的距离
  return s;
}